﻿using LiteStep.Currencies;
using LiteStep.Exchanges;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace LiteStep.Conversions
{
	public interface IConversion
	{
		decimal ConversionRatio { get; }
		DateTime Timestamp { get; }
	}

	public interface IConversion<TFrom, TTo> : IConversion
		where TFrom : ICurrency
		where TTo : ICurrency
	{
		TFrom From { get; }
		TTo To { get; }
        TTo Convert();
		TTo Convert(TFrom currency);
	}

	public interface IConversion<TFrom, TTo, out TOn> : IConversion<TFrom, TTo>
		where TFrom : ICurrency
		where TTo : ICurrency
		where TOn : IExchange
	{
		TOn Exchange { get; }
	}
}
